package com.heima.admin.service.impl;

import com.heima.admin.service.AdminWmNewsService;
import com.heima.api.IArticleClient;
import com.heima.api.wemedia.WemediaFeign;
import com.heima.model.admin.dtos.NewsAuthDto;
import com.heima.model.admin.vo.ApArticleVo;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import com.heima.model.user.pojos.ApUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class AdminWmNewsServiceImpl implements AdminWmNewsService {


    @Autowired
    private WemediaFeign sensitiveFeign;
    @Autowired
    private IArticleClient iArticleClient;

    /**
     * 文章列表查询
     *
     * @param dto
     * @return
     */
    @Override
    public ResponseResult listNewsVo(NewsAuthDto dto) {
        // 分页查询自媒体文章 （调用自媒体服务查wm_news表 ）
        dto.setPage(1);  // 使用setter方法或者如果dto的属性是public的话，可以直接赋值
        dto.setSize(10);
        // 注意：需要展示作者名称（wm_user）多表查询
        log.info("查询审核列表请求分页设置：{}，：{}", dto.getPage(), dto.getSize());
        return sensitiveFeign.listNews(dto);
    }


    /**
     * 查询文章详情
     *
     * @param id
     * @return
     */
    @Override
    public ResponseResult getNewsDetail(Integer id) {
        return sensitiveFeign.getNewsDetail(id);
    }


    /**
     * 人工审核 成功
     * @param dto
     * @return
     */
    @Override
    public ResponseResult authPass(NewsAuthDto dto) {
        // todo  :需要创建app端的文章信息，并更新自媒体文章的状态(去app端对ap_article表新增)
        //1.去更新自媒体服务 （定义启动状态）
        ApArticleVo apArticle = sensitiveFeign.authPass(dto);
        //2.去app端
        ApUser apUser = iArticleClient.authPass(apArticle);
        //3 去自媒体端开通账号
        if (apUser != null) {
            sensitiveFeign.addWmUser(apUser);
            return ResponseResult.okResult("成功开通自媒体账号");
        }
        return ResponseResult.errorResult(AppHttpCodeEnum.DATA_EXIST, "开通自媒体账号失败，账号可能已存在");
    }

    /**
     * 人工审核 拒绝
     * @param dto
     * @return
     */
    public ResponseResult authFail(NewsAuthDto dto) {
        //todo :拒绝以后需要给出原因，并修改文章的状态为2（去自媒体端 select *from wm_news;）
        return sensitiveFeign.authFail(dto);
    }
}
